#####################################################################
# Product:      KnowledgeEngine (Plone Edition)
#
# File:         __init__.py
#
# Copyright:    Copyright (c) 2006, Faulkner Technologies
#
# Author:       Brian Oliver
#
# Description:  Initialises Sub-Package EntitySources
#####################################################################

#####################################################################
## Knowledge Engine Library Imports
# (none - done automatically. see below)

#####################################################################
## Zope Library Imports
from Products.KnowledgeEngine.Common import getProductDirectory


#####################################################################
## Python Library Imports
import os

#####################################################################
## Python Logging Configuration
import logging
log = logging.getLogger("KnowledgeEngine.Startup")
    
#####################################################################    
## Import the KnowledgeEngine EntitySources
##
## Each KnowledgeEngine EntitySource type resides in an independant package
## (named after the element type) within the EntitySources folder
## in the KnowledgeEngine Zope Product
##
## By individually importing each EntitySource type, they have a chance of
## performing their own initialisation, including appropriately
## registering themselves as part of the KnowledgeEngine product.

# The path to the KnowledgeEngine EntitySource Packages
ENTITY_SOURCES_PATH = getProductDirectory() + os.sep + "EntitySources"

# Dynamically import each of the defined EntitySources packages in the ENTITY_SOURCES_PATH
for entitySource in [file for file in os.listdir(ENTITY_SOURCES_PATH) if os.path.isdir(ENTITY_SOURCES_PATH + os.sep + file)]:

    # Import the current entitySource (if it doesn't contain a .)
    if entitySource.find(".") < 0:
        log.info("Registering EntitySource: " + entitySource)

        exec "from Products.KnowledgeEngine.EntitySources." + entitySource + " import *"

#####################################################################    
